home
***
CD-ROM
|
disk
|
FTP
|
other
***
search
/
Magnum One
/
Magnum One (Mid-American Digital) (Disc Manufacturing).iso
/
d26
/
csa.arc
/
INIT.LSP
< prev
next >
Wrap
Lisp/Scheme
|
1987-05-22
|
3KB
|
105 lines
; initialization file for XLISP 1.7
; ccl (1/29/87),(3/2/87),(3/19/87)
; get some more memory
(princ "XLISP initialization")
(terpri)
(expand 6)
;(princ "\16[?7h")
(setq __file "noname.lsp")
(princ "define: ");
(princ "save, ")
; (save fun) - save a function definition to a file
(defmacro save (fun)
`(let* ((fname (strcat (symbol-name ',fun) ".lsp"))
(fval (car ,fun))
(fp (openo fname)))
(cond (fp (print (cons (if (eq (car fval) 'lambda)
'defun
'defmacro)
(cons ',fun (cdr fval))) fp)
(close fp)
fname)
(t nil))))
(princ "ed, ")
; define edit function to edit program loaded with 'ld'
; resets wrap around on since sedt leaves it off
(defun ed ()
(dos (strcat "SEDT " __file ".lsp"))
; (princ "\16[?7h")
(load __file))
(princ "ld, ")
; define load function to save file name and load file
(defun ld (fn)
(setq __file fn)
; (princ "\16[?7h")
(load fn)
)
; define edit function to edit a file (no .LSP appended) and NOT reload it
(defun edit (fn)
(dos (strcat "SEDT " fn)))
(princ "break, ")
(defun break ()
(setq *breakenable* t))
(princ "nobreak, ")
(defun nobreak ()
(setq *breakenable* nil))
(princ "debug, ")
(defun debug ()
(setq *tracenable* t)
)
(princ "nodebug, ")
(defun nodebug ()
(setq *tracenable* nil)
)
; define functions to allow trace/untrace of functions
; original by dave wecker
(defun evalhookfcn (expr env &aux val)
(if (and (consp expr) (member (car expr) *tracelist*))
(progn (dotimes (a *tracedepth*) (princ "-"))
(princ ">> ")
(princ expr)
(princ " ")
(if (consp env) (princ env))
(terpri)
(setq *tracedepth* (1+ *tracedepth*))
(setq val (evalhook expr evalhookfcn nil env))
(setq *tracedepth* (1- *tracedepth*))
(dotimes (a *tracedepth*) (princ "-"))
(princ "<< ") (print val))
(evalhook expr evalhookfcn nil env)))
(princ "trace, ")
(defun trace (fun)
(setq *evalhook* evalhookfcn)
(if (not (member fun *tracelist*))
(setq *tracelist* (cons fun *tracelist*)))
*tracelist*)
(princ "notrace")
(defun notrace (fun)
(if (null (setq *tracelist* (delete fun *tracelist*)))
(setq *evalhook* nil))
*tracelist*)
; initialize debug symbols
(setq *breakenable* t) ; allow breaks
(setq *tracenable* nil) ; no traceback info
(setq *tracelist* nil) ; no function trace
(setq *tracedepth* 0) ; no function trace
(terpri)
(terpri)